﻿using System.Linq;
using VO;
using System.Collections.Generic;

namespace DAL
{
    public class ContatoClienteDAL
    {

        #region Insert
        public void Insert(ContatoCliente obj)
        {
            using (var contexto = new CallcenterEntities())
            {
                var objC = new tbContatoCliente();
                objC = PopulaObjeto(obj, objC);
                contexto.AddTotbContatoCliente(objC);
                contexto.SaveChanges();
            }
        }
        #endregion

        #region Select
        public IList<ContatoCliente> Select(int idCliente)
        {
            using (var contexto = new CallcenterEntities())
            {
                IQueryable<tbContatoCliente> contato;

                contato = (from contatoAux in contexto.tbContatoCliente
                           where contatoAux.idCliente == idCliente
                           select contatoAux);

                //Carrega lista
                var list = PopulaObjeto(contato);

                return list;
            }
        }

        public IList<ContatoCliente> Select(int idCliente, string telefone)
        {
            using (var contexto = new CallcenterEntities())
            {
                IQueryable<tbContatoCliente> contato;

                contato = (from contatoAux in contexto.tbContatoCliente
                           where contatoAux.idCliente == idCliente && contatoAux.Telefone == telefone
                           select contatoAux);

                //Carrega lista
                var list = PopulaObjeto(contato);

                return list;
            }
        }
        #endregion

        #region SelectCliente
        public IList<ContatoCliente> SelectCliente(int idCliente)
        {
            using (var contexto = new CallcenterEntities())
            {
                IQueryable<CCCliente_Callcenter> contato;

                contato = (from contatoAux in contexto.CCCliente_Callcenter
                           where contatoAux.idCliente == idCliente
                           select contatoAux);

                //Carrega lista
                var list = PopulaObjetoCliente(contato);

                return list;
            }
        }
        #endregion

        #region PopulaObjeto
        protected static tbContatoCliente PopulaObjeto(ContatoCliente obj, tbContatoCliente tabela)
        {
            tabela.idCliente = obj.idCliente;
            tabela.Telefone = obj.Telefone;
            tabela.TipoTelefone = obj.TipoTelefone;
            tabela.fgAtivo = obj.fgAtivo;
            return tabela;
        }

        protected static IList<ContatoCliente> PopulaObjeto(IQueryable<tbContatoCliente> reader)
        {
            IList<ContatoCliente> list = new List<ContatoCliente>();
            foreach (var obj in reader)
            {
                var newObj = new ContatoCliente();
                newObj.idContatoCliente = obj.idContatoCliente;
                newObj.idCliente = obj.idCliente;
                newObj.Telefone = obj.Telefone;
                newObj.TipoTelefone = obj.TipoTelefone;
                newObj.fgAtivo = obj.fgAtivo;
                list.Add(newObj);
            }
            return list;
        }

        protected static IList<ContatoCliente> PopulaObjetoCliente(IQueryable<CCCliente_Callcenter> reader)
        {
            IList<ContatoCliente> list = new List<ContatoCliente>();
            //foreach (var obj in reader)
            //{
            //    var newObj = new ContatoCliente();
            //    if (!string.IsNullOrWhiteSpace(obj.ref1Telefone))
            //    {
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref1DDDTel + obj.ref1Telefone;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.ref2Telefone))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref2DDDTel + obj.ref2Telefone;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.ref3Telefone))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref3DDDTel + obj.ref3Telefone;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.ref1Celular))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref1DDDCel + obj.ref1Celular;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.ref2Celular))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref2DDDCel + obj.ref2Celular;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.ref3Celular))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref3DDDCel + obj.ref3Celular;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.ref3Telefone))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.ref3DDDCel + obj.ref3Telefone;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.telComercial))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.dddTelComercial + obj.telComercial;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.telContato1))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.dddContato1 + obj.telContato1;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.telContato2))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.dddContato2 + obj.telContato2;
            //        list.Add(newObj);
            //    }
            //    if (!string.IsNullOrWhiteSpace(obj.CelSMS))
            //    {
            //        newObj = new ContatoCliente();
            //        newObj.idContatoCliente = 0;
            //        newObj.idCliente = obj.idCliente;
            //        newObj.Telefone = obj.dddCelSMS + obj.CelSMS;
            //        list.Add(newObj);
            //    }
            //}
            return list;
        }
        #endregion

    }
}